#ifndef VECTOR_H
#define VECTOR_H
#include <math.h>
#include <string>
#include <stdarg.h>
#include <iostream>
#include <sstream>

using namespace std;

class Vector3{

	public:
		//Constructors
		Vector3();
		Vector3(float x, float y, float z);
		Vector3( const Vector3 & v );

		//Overloaded operators
		Vector3 operator*(float mul);
		Vector3 operator+(Vector3& v);
		Vector3 operator/(float div);
		Vector3 operator-(Vector3& v);
		bool operator==(Vector3& v);
		 
		//Takes a string and vectors and prints them.  Use %v to reference a vector in the string and then
		//put the vector in as the second, third, ect parameter.  Similar to printf.
		static void printVectors(string in, ...);
		
		//Methods
		//returns a vector coordinate (0 for x, 1 for y, 2 for z)
		float getCord(int pos);
		//Sets a coordinate (0 for x, 1 for y, 2 for z)
		void setCord(int pos, float val);
		//returns the magnitude of the vector
		float magnitude();
		//return the vector normalized
		Vector3 normalize();
		//Dot product of two vectors
		float dotProduct(Vector3 b);
		//angle between two vectors
		float getAngle(Vector3 b);
		//cross product between two vectors
		Vector3 crossProduct(Vector3 b);
		//Project this onto b
		Vector3 projectAtoB(Vector3 b);

		float x;
		float y;
		float z;

};
#endif